package net.mikoo.seals.boss.biz.manager;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

import net.mikoo.seals.boss.common.enums.CompanyTypeEnum;
import net.mikoo.seals.boss.common.exception.ParametersException;
import net.mikoo.seals.boss.common.utils.ValidateUtils;
import net.mikoo.seals.boss.model.Company;
import net.mikoo.seals.boss.model.Party;

@Component
public class CompanyManager {
	
	public void checkModifyParms(Company company) {
		
		if(company.getCompanyId() == null) {
			throw new ParametersException("companyId is null");
		}
		checkCreateParms(company);
	}

	
	public void checkCreateParms(Company company) {
		
		if(company == null) {
			throw new ParametersException("company is null");
		}
		
		if(StringUtils.isBlank(company.getCompanyType())) {
			throw new ParametersException("请选择企业类型");
		}
		
		if(CompanyTypeEnum.getByCode(company.getCompanyType()) == null) {
			throw new ParametersException("企业类型输入有误");
		}
		
		if(StringUtils.isBlank(company.getCompanyName())) {
			throw new ParametersException("请输入公司名称");
		}
		
		if(!ValidateUtils.charLength(company.getCompanyName(), 5, 80)) {
			throw new ParametersException("公司名称长度必须在5到80个字符之间");
		}
		
		if(company.getAreaId()== null ) {
			throw new ParametersException("请选择公司所在地区");
		}
		
		if(StringUtils.isBlank(company.getCreditCode()) || !ValidateUtils.charLength(company.getCreditCode(), 9, 18)) {
			throw new ParametersException("请输入公司营业执照统18位一信用代码或9位组织机构代码");
		}
		
		if(company.getBusinessTermStart() == null) {
			throw new ParametersException("请输入公司营业开始期限");
		}
		
		if(company.getBusinessTermStart() == null) {
			throw new ParametersException("请输入公司营业结束期限");
		}
		
		if(StringUtils.isBlank(company.getBusinessScope())) {
			throw new ParametersException("请输入公司经营范围");
		}
		
		if(StringUtils.isBlank(company.getBusinessLicenseUrl())) {
			throw new ParametersException("请输上传公司营业执照");
		}
		
		
		if(StringUtils.isBlank(company.getLegalPerson())) {
			throw new ParametersException("请输入法人姓名");
		}
		
		if(!ValidateUtils.charLength(company.getLegalPerson(), 2, 50)) {
			throw new ParametersException("法人姓名必须在2到50个字符之间");
		}
		
		if(StringUtils.isBlank(company.getIdcard())) {
			throw new ParametersException("请输入法人身份证");
		}
		
		if(!ValidateUtils.IDcard(company.getIdcard())) {
			throw new ParametersException("法人身份证格式输入有误");
		}
		
		if(StringUtils.isBlank(company.getIdcardFront())) {
			throw new ParametersException("请上传法人身份证正面照");
		}
		
		if(StringUtils.isBlank(company.getIdcardBack())) {
			throw new ParametersException("请上传法人身份证反面照");
		}
		
		
		if(StringUtils.isBlank(company.getIdcardBack())) {
			throw new ParametersException("请上传法人身份证反面照");
		}
		
		if(StringUtils.isBlank(company.getUserLoginId())) {
			throw new ParametersException("法人登录账户不能为空");
		}
		
		if(!ValidateUtils.Mobile(company.getUserLoginId())) {
			throw new ParametersException("法人登录账户为手机号码");
		}
		
		if(StringUtils.isBlank(company.getPassword())) {
			throw new ParametersException("法人登录密码不能为空");
		}
		
	}
	
	public  void checkCreateAccountParms(Party party) {
		
		if(party == null) {
			throw new ParametersException("party is null");
		}
		if(party.getCompanyId() == null) {
			throw new ParametersException("CompanyId is null");
		}
		
		if(StringUtils.isBlank(party.getPerson().getName())) {
			throw new ParametersException("请输入管理员姓名");
		}
		
		if(!ValidateUtils.charLength(party.getPerson().getName(), 2, 50)) {
			throw new ParametersException("管理员姓名必须在2到50个字符之间");
		}
		
		if(StringUtils.isBlank(party.getPerson().getIdcard())) {
			throw new ParametersException("请输入管理员身份证号码");
		}
		
		if(!ValidateUtils.IDcard(party.getPerson().getIdcard())) {
			throw new ParametersException("管理员身份证号码输入有误");
		}
		
		if(StringUtils.isBlank(party.getPerson().getIdcardFront())) {
			throw new ParametersException("请上传管理员身份证正面照");
		}
		
		if(StringUtils.isBlank(party.getPerson().getIdcardBack())) {
			throw new ParametersException("请上传管理员身份证反面照");
		}
		
		if(StringUtils.isBlank(party.getUserLoginId())) {
			throw new ParametersException("请输入管理员手机号码");
		}
		
		if(!ValidateUtils.Mobile(party.getUserLoginId())) {
			throw new ParametersException("管理员手机号码格式输入有误");
		}
		
		
		if(StringUtils.isBlank(party.getUserLogin().getCurrentPassword())) {
			throw new ParametersException("请输入初始化密码");
		}
		
	}
}
